package com.campus.app.service;

import com.campus.commons.entity.SocietyFor;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.utils.MyPage;
import com.campus.commons.utils.Result;
import org.springframework.scheduling.annotation.Scheduled;

import java.util.List;

/**
 * <p>
 * 学社审核 服务类
 * </p>
 *
 * @author Rin
 * @since 2021-01-26
 */
public interface SocietyForsService extends IService<SocietyFor> {
    /**
     * 删除所有处理好超过一个月的申请； 这个有程序定期调用；
     * @return
     */
    @Scheduled(cron = "* * * L * ? *")
    int delSocityFors();

    /**
     * 异步发送短信
     * @param studentId
     * @param text
     */
    void sendMailAsync(Integer studentId, String text);

    /**
     * 添加申请学社；
     * @param societyFor 申请信息
     * @return
     */
    Result addSocityFor(SocietyFor societyFor);
    /**
     * 筛选出部门老师可以查看的申请
     * @param myPage 分页
     * @param deId 部门Id
     * @param teacherId 教师Id
     */
    Result<List<SocietyFor>> getSocietyForsByDeTch_Q(MyPage myPage,Integer deId,Integer teacherId);

    /**
     * 筛序出教员可以查看的申请
     * @param myPage 分页
     * @param teacherId
     * @return
     */
    Result<List<SocietyFor>> getSocietyForsByTch_Q(MyPage myPage,Integer teacherId);

    /**
     * 筛选出班主任可以查看的申请；
     * @param myPage
     * @param teacherId
     * @return
     */
    Result<List<SocietyFor>> getSocietyForsByLifeTch_Q(MyPage myPage,Integer teacherId);

    /**
     * 教员处理审核方法；
     *
     * @param societyFor
     * @param dispose
     * @return
     */
    Result disposeByTch_Q(SocietyFor societyFor, boolean dispose);

    /**
     * 班主任处理审核方法
     *
     * @param societyFor
     * @param dispose
     * @return
     */
    Result disposeByLifeTch_Q(SocietyFor societyFor, boolean dispose);

    /**
     * 部门老师处理审核方法
     *
     * @param societyFor
     * @param dispose
     * @return
     */
    Result disposeByDeTch_Q(SocietyFor societyFor, boolean dispose);


    /**
     * 查询所有参加考试的小伙伴
     *
     * @param page
     * @param limit
     * @param deId
     * @param roleId
     * @return
     */
    Result<List<SocietyFor>> getExams(int page, int limit, int deId, int roleId);


    /**
     * 更新分数，并且设置考试通过的参数为3
     *
     * @param id
     * @param penExam
     * @param computerExam
     * @param interView
     * @param applyState
     * @return
     */
    Result UpExamsFraction(int id, int penExam, int computerExam, int interView, int applyState);


    /**
     * 通过学生id为每个学生发送信息
     *
     * @param studentId
     * @param text
     * @return
     */
    Result examsEmail(Integer[] studentId, String text);

    /**
     * 通过学生id来更新学生状态
     *
     * @param studentId
     */
    void UpdateSendSate(Integer... studentId);

    /**
     * 更新分数
     *
     * @param applyState
     * @param computerExam
     * @param interView
     * @param penExam
     * @param id
     * @param studentId
     * @return
     */
    Result updateScore(int applyState, int computerExam, int interView, int penExam, int id,int studentId);

    /**
     * 复合搜索-录入分数
     *
     * @param deId
     * @param studentName
     * @param page
     * @param limit
     * @return
     */
    Result<List<SocietyFor>> Scoresearch(int deId, String studentName, int page, int limit);

    /**
     * 用户通过
     * @param id
     * @param userId
     * @param deId
     * @param studentId
     * @return
     */
    Result passUser(int id, int userId,int deId,int studentId);

    /**
     * 拒绝通过
     * @param id
     * @param studentId
     * @return
     */
    Result noPass(int id,  int studentId);
}
